home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (DO)
/
Micro on the Apple Volume 1 (1981)(Micro Ink)[no boot].zip
/
Micro on the Apple Volume 1 (1981)(Micro Ink)[no boot].do
/
SOLAR.bas
< prev
next >
Wrap
BASIC Source File
|
1996-12-24
|
7KB
|
205 lines
10 REM ***************************
12 REM * *
14 REM * SOLAR SYSTEM SIMULATION *
16 REM * DAVID A. PARTYKA *
18 REM * *
20 REM * SOLAR *
22 REM * *
24 REM * COPYRIGHT (C) 1981 *
25 REM * MICRO INK, INC. *
26 REM * CHELMSFORD, MA 01824 *
27 REM * ALL RIGHTS RESERVED *
28 REM * *
29 REM ***************************
30 REM
80 GOTO 1000
90 REM (100-110) PLOT X AND Y VALUES
100 HPLOT X,Y
110 RETURN
150 REM (200-300) CALCULATE THE X AND YPLANET POSITIONS
200 D = Z - INT(Z/SRD) *SRD
205 REM D IS FOR DAYS
210 B = Q -(D/SRD *Q2)
220 RV = A -(P/(1 +E * COS(B)))
225 REM RV IS THE RADIUS VECTOR OR DISTANCE FROM THE SUN TO THE PLANET
230 V = PE/RV -EZ
240 IF V = >1 THEN V = VL
245 IF V = < -1 THEN V = -VL
250 V1 = - ATN(V/ SQR( -V *V +1)) +T
255 REM V1 IS THE ANGLE THAT THE PLANET LIES FROM THE SUN. THE 0 POINT BEING AT THE RIGHT, INCREASING COUNTERCLOCKWISE.
260 IF D <SRD/2 THEN V1 = Q2 -V1
270 V1 = V1 +J
280 X = COS(V1) *RV:Y = - SIN(V1) *RV *FA
290 X = X *TT +X1:Y = Y *TT +Y1
300 RETURN
900 REM (1000) DISPLAY PRIMARY PAGE, SET TEXT MODE
1000 POKE -16300,0: POKE -16303,0
1010 T = 1.5708
1020 Q = 3.14159265
1030 Q2 = 6.2831853
1040 VL = .99999999
1050 FA = 29/32
1055 REM FA IS THE RATIO OF X TO Y TO PLOT A CIRCLE AN THE APPLE INSTEAD OF AN OVAL
1060 X1 = 140:Y1 = 96
1700 HOME : PRINT : PRINT : PRINT : PRINT
1800 PRINT "DO YOU WANT TO DISPLAY "
1810 PRINT : PRINT "THE SAME PLANETS AS YOUR LAST RUN"
1815 PRINT : INPUT "Y OR N ";A$
1820 PRINT : PRINT
1830 IF A$ = "N" THEN 2000
1840 IF A$ < >"Y" THEN 1800
1850 IF S1 < >0 THEN 4000
1855 PRINT : PRINT
1860 PRINT : PRINT "YOU HAVEN'T PICKED THE PLANETS YET"
1870 PRINT : PRINT : PRINT
2000 PRINT "CHOOSE THE PLANETS YOU WANT TO DISPLAY"
2005 PRINT
2010 PRINT "ENTER A 1 FOR YES AND A 0 FOR NO"
2011 PRINT
2012 REM (2020-2079) GET SPECIFIC VALUES FOR EACH PLANET
2013 REM S1=ORBITAL PERIOD: P1=A1*(1-E1*E1)/2
2014 REM E1=ECCENTRICITY: U1=P1/E1:K1=1/E1
2015 REM REM A1= MINIMUM AND MAXIMUM DISTANCE FROM THE SUN
2016 REM J1=LONGITUDE OF PERIHELION IN RADIANS
2017 REM W1= DAYS FROM 0 DEGREES TO PERIHELION FOR 1980
2018 REM TT=SCALING FACTOR TO USE FULL PLOTTING AREA IF SELECTED PLANETS ARE DISPLAYED
2020 INPUT "DISPLAY MERCURY ";ME
2021 S1 = 87.969
2022 E1 = .2056
2023 A1 = 43.403 +28.597
2024 P1 = A1 *(1 -E1 *E1)/2
2025 K1 = 1/E1
2026 U1 = P1/E1
2027 J1 = 77.1 *Q/180
2028 W1 = 37.58
2029 IF ME = 1 THEN TT = 2.3
2030 INPUT "DISPLAY VENUS ";VE
2031 S2 = 224.701
2032 E2 = .0068
2033 A2 = 67.726 +66.813
2034 P2 = A2 *(1 -E2 *E2)/2
2035 K2 = 1/E2
2036 U2 = P2/E2
2037 J2 = 131.3 *Q/180
2038 W2 = 140.5
2039 IF VE = 1 THEN TT = 1.5
2040 INPUT "DISPLAY EARTH ";EA
2041 S3 = 365.256
2042 E3 = .0167
2043 A3 = 94.555 +91.445
2044 P3 = A3 *(1 -E3 *E3)/2
2045 K3 = 1/E3
2046 U3 = P3/E3
2047 J3 = 102.6 *Q/180
2048 W3 = -3
2049 IF EA = 1 THEN TT = 1.05
2050 INPUT "DISPLAY MARS ";MA
2051 S4 = 686.980
2052 E4 = .0934
2053 A4 = 154.936 +128.471
2054 P4 = A4 *(1 -E4 *E4)/2
2055 K4 = 1/E4
2056 U4 = P4/E4
2057 J4 = 335.7 *Q/180
2058 W4 = 289
2059 IF MA = 1 THEN TT = .6
2060 INPUT "DISPLAY JUPITER ";JU
2061 S5 = 4332.125
2062 E5 = .0478
2063 A5 = 507.046 +460.595
2064 P5 = A5 *(1 -E5 *E5)/2
2065 K5 = 1/E5
2066 U5 = P5/E5
2067 J5 = 13.6 *Q/180
2068 W5 = 1604
2069 IF JU = 1 THEN TT = .19
2070 INPUT "DISPLAY SATURN ";SA
2071 S6 = 10825.863
2072 E6 = .0555
2073 A6 = 937.541 +838.425
2074 P6 = A6 *(1 -E6 *E6)/2
2075 K6 = 1/E6
2076 U6 = P6/E6
2077 J6 = 95.5 *Q/180
2078 W6 = 2115
2079 IF SA = 1 THEN TT = .1
3900 HOME : PRINT : PRINT
4000 PRINT : PRINT "DO YOU WANT ": PRINT
4010 INPUT "POINT (0) OR CONTINUOUS (1) PLOTS ";TY
4015 IF TY < >0 AND TY < >1 THEN 4000
4020 PRINT : PRINT : PRINT
4030 PRINT : PRINT "DO YOU WANT TO START AT": PRINT
4040 PRINT "A SPECIFIC DATE (0) ": PRINT
4050 INPUT "OR THE BEGINNING OF THE YEAR (1) ";DT
4051 IF DT < >0 AND DT < >1 THEN 4020
4052 IF DT = 1 THEN 4060
4053 PRINT : PRINT : PRINT
4054 INPUT "ENTER # OF DAYS SINCE JAN 0, 1980 ";DE
4057 Z1 = DE
4060 PRINT : PRINT : INPUT "ENTER # OF DAYS TO PLOT ";DN
4070 PRINT : PRINT : PRINT
4080 INPUT "ENTER # OF DAYS BETWEEN PLOTS ";DA
4082 IF DA < >0 THEN 4800
4084 PRINT : PRINT
4086 PRINT "0 NOT ALLOWED": GOTO 4070
4090 REM 4800 INIT HIGH RES, FULL SCREEN, PAGE 2
4800 HGR2
4802 REM (4805-4860) PLOT REFERENCE POINTS AND OUTER 10 DEGREE CIRCLE
4805 HCOLOR= 3
4810 X = 140:Y = 96: GOSUB 100
4811 X = 141:Y = 96: GOSUB 100
4815 X = 248:Y = 96: GOSUB 100
4820 FOR L1 = 0 TO Q2 STEP 1/36 *Q2
4830 X = X1 + COS(L1) *105.9
4840 Y = Y1 - SIN(L1) *105.9 *FA
4850 GOSUB 100
4860 NEXT L1
4900 REM (5100-5140) SET UP VALUES FOR MERCURY AND PLOT
5100 IF ME = 0 THEN 5200
5110 A = A1:P = P1:E = E1:PE = U1:EZ = K1:SRD = S1:J = J1:W = W1:Z = Z1 +W
5120 GOSUB 200:F1 = X:G1 = Y
5125 IF TY = 1 THEN 5140
5130 X = M1:Y = N1: HCOLOR= 0: GOSUB 100
5140 X = F1:Y = G1:M1 = X:N1 = Y: HCOLOR= 3: GOSUB 100
5190 REM (5200-5240) SET UP VALUE FOR VENUS AND PLOT
5200 IF VE = 0 THEN 5300
5210 A = A2:P = P2:E = E2:PE = U2:EZ = K2:SRD = S2:J = J2:W = W2:Z = Z1 +W
5220 GOSUB 200:F2 = X:G2 = Y
5225 IF TY = 1 THEN 5240
5230 X = M2:Y = N2: HCOLOR= 0: GOSUB 100
5240 X = F2:Y = G2:M2 = X:N2 = Y: HCOLOR= 3: GOSUB 100
5290 REM (5300-5240) SET UP VALUES FOR EARTH AND PLOT
5300 IF EA = 0 THEN 5400
5310 A = A3:P = P3:E = E3:PE = U3:EZ = K3:SRD = S3:J = J3:W = W3:Z = Z1 +W
5320 GOSUB 200:F3 = X:G3 = Y
5325 IF TY = 1 THEN 5340
5330 X = M3:Y = N3: HCOLOR= 0: GOSUB 100
5340 X = F3:Y = G3:M3 = X:N3 = Y: HCOLOR= 3: GOSUB 100
5390 REM (5400-5440) SET UP VALUES FOR MARS AND PLOT
5400 IF MA = 0 THEN 5500
5410 A = A4:P = P4::E = E4:PE = U4:EZ = K4:SRD = S4:J = J4:W = W4:Z = Z1 +W
5420 GOSUB 200:F4 = X:G4 = Y
5425 IF TY = 1 THEN 5440
5430 X = M4:Y = N4: HCOLOR= 0: GOSUB 100
5440 X = F4:Y = G4:M4 = X:N4 = Y: HCOLOR= 3: GOSUB 100
5490 REM (5500-5540) SET UP VALUES FOR JUPITER AND PLOT
5500 IF JU = 0 THEN 5600
5510 A = A5:P = P5:E = E5:PE = U5:EZ = K5:SRD = S5:J = J5:W = W5:Z = Z1 +W
5520 GOSUB 200:F5 = X:G5 = Y
5525 IF TY = 1 THEN 5540
5530 X = M5:Y = N5: HCOLOR= 0: GOSUB 100
5540 X = F5:Y = G5:M5 = X:N5 = Y: HCOLOR= 3: GOSUB 100
5590 REM (5600-5640) SET UP VALUES FOR SATURN
5600 IF SA = 0 THEN 6000
5610 A = A6:P = P6:E = E6:PE = U6:EZ = K6:SRD = S6:J = J6:W = W6:Z = Z1 +W
5620 GOSUB 200:F6 = X:G6 = Y
5625 IF TY = 1 THEN 5640
5630 X = M6:Y = N6: HCOLOR= 0: GOSUB 100
5640 X = F6:Y = G6:M6 = X:N6 = Y: HCOLOR= 3: GOSUB 100
6000 Z1 = Z1 +DA
6100 IF Z1 >DE +DN THEN 7000
6200 GOTO 5100
7000 X = 279:Y = 190: GOSUB 100: INPUT A$
7050 REM (7000) PLOT POINT 297 190 TO INDICATE END OF SIMULATION THEN WAIT FOR INPUT OF ANY CHARACTER TO START AGAIN
7100 Z1 = 0:DE = 0
7200 GOTO 1000